import pandas as pd

# 定义 Excel 文件路径列表
file_paths = [r'D:\competition\2025tongji\new_data\000相对正常.xlsx',
              r'D:\competition\2025tongji\new_data\0原始 - 0幼稚粒 - 1异淋.xlsx',
              r'D:\competition\2025tongji\new_data\0原始 - 1幼稚粒 - 0异淋.xlsx',
              r'D:\competition\2025tongji\new_data\1原始 - 0幼稚粒 - 0异淋.xlsx']

# 定义需要处理的列名
columns_to_process = [
    '\tWBC', '\tNeu#', '\tLym#', '\tMon#', '\tEos#',
    '\tBas#', '\tIMG#', '\tNeu%', '\tLym%', '\tMon%', '\tEos%', '\tBas%',
    '\tIMG%', '\tRBC', '\tHGB', '\tHCT', '\tMCV', '\tMCH', '\tMCHC',
    '\tRDW-CV', '\tRDW-SD', '\tPLT', '\tMPV', '\tPDW', '\tPCT', '\tP-LCC',
    '\tP-LCR', '\tNRBC#', '\tNRBC%', '\tHFC#', '\tHFC%', '\tIME%',
    '\tIME#', '\tNLR', '\tInR#', '\tInR‰', '\tMicro#', '\tMicro%',
    '\tMacro#', '\tMacro%', '\tPLR', '\tPDW-SD'
]


# 创建一个空的DataFrame用于存储合并后的数据
combined_df = pd.DataFrame()

# 循环读取每个文件并合并指定列的数据
for file_path in file_paths:
    df = pd.read_excel(file_path)
    # 提取指定列的数据
    selected_df = df[columns_to_process]
    # 合并数据
    combined_df = pd.concat([combined_df, selected_df], ignore_index=True)

# 将值为 '****' 的数据替换为 -1
combined_df = combined_df.replace('****', -1)

# 尝试将 NLR 和 PLR 列转换为数值类型
columns_to_convert = ['\tNLR', '\tPLR']
for col in columns_to_convert:
    combined_df[col] = pd.to_numeric(combined_df[col], errors='coerce')

# 创建一个掩码，用于标记值为 -1 的元素
mask = combined_df != -1

# # 打印每列的数据类型
# print("\n每列的数据类型：")
# print(combined_df.dtypes)

# 计算每列的最大值和最小值，同时忽略值为 -1 的元素
max_values = combined_df[mask].max()
min_values = combined_df[mask].min()

# 将最大值和最小值结果转换为字典
max_values_dict = max_values.to_dict()
min_values_dict = min_values.to_dict()

# 打印最大值和最小值的字典
print("每列的最大值字典：")
print(max_values_dict)
print("\n每列的最小值字典：")
print(min_values_dict)